package me.zxc.utils;

import cn.hutool.core.io.FileUtil;
import cn.hutool.poi.excel.ExcelWriter;
import lombok.extern.slf4j.Slf4j;

import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Optional;

/**
 * 业务定制文件工具
 *
 * @author gbandszxc
 */
@Slf4j
public class ExportUtil {
    /**
     * 字符串生成纯文本（覆盖写）
     *
     * @param content  字符串内容
     * @param savePath 保存路径
     * @param fileName 文件名
     */
    public static void createPlaintext(String content, String savePath, String fileName) {
        // 文件名路径处理
        fileName = ValidUtil.validateFilename(fileName);
        if (!fileName.endsWith(".txt")) {
            fileName += ".txt";
        }
        if (!(savePath.endsWith("\\") || savePath.endsWith("/"))) {
            savePath += "/";
        }
        // 输出流输出
        BufferedWriter writer = FileUtil.getWriter(savePath + fileName, StandardCharsets.UTF_8, false);
        try {
            writer.write(content);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            Optional.ofNullable(writer).ifPresent(w -> {
                try {
                    w.flush();
                    w.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            });
        }
        log.info("文本已保存至：\n" + savePath);
    }

    /**
     * 生成excel
     *
     * @param writer  hutool ExcelWriter/BigExcelWriter
     * @param headers 表头列
     * @param contents 内容列集合
     */
    public static void createSimpleExcel(ExcelWriter writer, String[] headers, List<?> contents) {
        // 创建表头
        ExcelFormatter.createHeader(headers, writer);
        // 写入数据
        writer.write(contents);
        // 自适应列宽 超出时换行
        ExcelFormatter.autoSizeColumns(writer, true);
        // 关闭并释放资源
        writer.close();

        log.info("excel导出成功！");
    }
}
